
// Generated from D:/antlr/src/main/resources\pascal.g4 by ANTLR 4.9.2

#pragma once


#include "antlr4-runtime.h"
#include "pascalParser.h"


namespace pascal {

/**
 * This class defines an abstract visitor for a parse tree
 * produced by pascalParser.
 */
class  pascalVisitor : public antlr4::tree::AbstractParseTreeVisitor {
public:

  /**
   * Visit parse trees produced by pascalParser.
   */
    virtual antlrcpp::Any visitProgram(pascalParser::ProgramContext *context) = 0;

    virtual antlrcpp::Any visitProgramHeading(pascalParser::ProgramHeadingContext *context) = 0;

    virtual antlrcpp::Any visitIdentifier(pascalParser::IdentifierContext *context) = 0;

    virtual antlrcpp::Any visitBlock(pascalParser::BlockContext *context) = 0;

    virtual antlrcpp::Any visitUsesUnitsPart(pascalParser::UsesUnitsPartContext *context) = 0;

    virtual antlrcpp::Any visitLabelDeclarationPart(pascalParser::LabelDeclarationPartContext *context) = 0;

    virtual antlrcpp::Any visitLabel(pascalParser::LabelContext *context) = 0;

    virtual antlrcpp::Any visitConstantDefinitionPart(pascalParser::ConstantDefinitionPartContext *context) = 0;

    virtual antlrcpp::Any visitConstantDefinition(pascalParser::ConstantDefinitionContext *context) = 0;

    virtual antlrcpp::Any visitConstantChr(pascalParser::ConstantChrContext *context) = 0;

    virtual antlrcpp::Any visitConstant(pascalParser::ConstantContext *context) = 0;

    virtual antlrcpp::Any visitUnsignedNumber(pascalParser::UnsignedNumberContext *context) = 0;

    virtual antlrcpp::Any visitUnsignedInteger(pascalParser::UnsignedIntegerContext *context) = 0;

    virtual antlrcpp::Any visitUnsignedReal(pascalParser::UnsignedRealContext *context) = 0;

    virtual antlrcpp::Any visitSign(pascalParser::SignContext *context) = 0;

    virtual antlrcpp::Any visitBool_(pascalParser::Bool_Context *context) = 0;

    virtual antlrcpp::Any visitString(pascalParser::StringContext *context) = 0;

    virtual antlrcpp::Any visitTypeDefinitionPart(pascalParser::TypeDefinitionPartContext *context) = 0;

    virtual antlrcpp::Any visitTypeDefinition(pascalParser::TypeDefinitionContext *context) = 0;

    virtual antlrcpp::Any visitFunctionType(pascalParser::FunctionTypeContext *context) = 0;

    virtual antlrcpp::Any visitProcedureType(pascalParser::ProcedureTypeContext *context) = 0;

    virtual antlrcpp::Any visitType_(pascalParser::Type_Context *context) = 0;

    virtual antlrcpp::Any visitSimpleType(pascalParser::SimpleTypeContext *context) = 0;

    virtual antlrcpp::Any visitScalarType(pascalParser::ScalarTypeContext *context) = 0;

    virtual antlrcpp::Any visitSubrangeType(pascalParser::SubrangeTypeContext *context) = 0;

    virtual antlrcpp::Any visitTypeIdentifier(pascalParser::TypeIdentifierContext *context) = 0;

    virtual antlrcpp::Any visitStructuredType(pascalParser::StructuredTypeContext *context) = 0;

    virtual antlrcpp::Any visitUnpackedStructuredType(pascalParser::UnpackedStructuredTypeContext *context) = 0;

    virtual antlrcpp::Any visitStringtype(pascalParser::StringtypeContext *context) = 0;

    virtual antlrcpp::Any visitArrayType(pascalParser::ArrayTypeContext *context) = 0;

    virtual antlrcpp::Any visitTypeList(pascalParser::TypeListContext *context) = 0;

    virtual antlrcpp::Any visitIndexType(pascalParser::IndexTypeContext *context) = 0;

    virtual antlrcpp::Any visitComponentType(pascalParser::ComponentTypeContext *context) = 0;

    virtual antlrcpp::Any visitRecordType(pascalParser::RecordTypeContext *context) = 0;

    virtual antlrcpp::Any visitFieldList(pascalParser::FieldListContext *context) = 0;

    virtual antlrcpp::Any visitFixedPart(pascalParser::FixedPartContext *context) = 0;

    virtual antlrcpp::Any visitRecordSection(pascalParser::RecordSectionContext *context) = 0;

    virtual antlrcpp::Any visitVariantPart(pascalParser::VariantPartContext *context) = 0;

    virtual antlrcpp::Any visitTag(pascalParser::TagContext *context) = 0;

    virtual antlrcpp::Any visitVariant(pascalParser::VariantContext *context) = 0;

    virtual antlrcpp::Any visitSetType(pascalParser::SetTypeContext *context) = 0;

    virtual antlrcpp::Any visitBaseType(pascalParser::BaseTypeContext *context) = 0;

    virtual antlrcpp::Any visitFileType(pascalParser::FileTypeContext *context) = 0;

    virtual antlrcpp::Any visitPointerType(pascalParser::PointerTypeContext *context) = 0;

    virtual antlrcpp::Any visitVariableDeclarationPart(pascalParser::VariableDeclarationPartContext *context) = 0;

    virtual antlrcpp::Any visitVariableDeclaration(pascalParser::VariableDeclarationContext *context) = 0;

    virtual antlrcpp::Any visitProcedureAndFunctionDeclarationPart(pascalParser::ProcedureAndFunctionDeclarationPartContext *context) = 0;

    virtual antlrcpp::Any visitProcedureOrFunctionDeclaration(pascalParser::ProcedureOrFunctionDeclarationContext *context) = 0;

    virtual antlrcpp::Any visitProcedureDeclaration(pascalParser::ProcedureDeclarationContext *context) = 0;

    virtual antlrcpp::Any visitFormalParameterList(pascalParser::FormalParameterListContext *context) = 0;

    virtual antlrcpp::Any visitFormalParameterSection(pascalParser::FormalParameterSectionContext *context) = 0;

    virtual antlrcpp::Any visitParameterGroup(pascalParser::ParameterGroupContext *context) = 0;

    virtual antlrcpp::Any visitIdentifierList(pascalParser::IdentifierListContext *context) = 0;

    virtual antlrcpp::Any visitConstList(pascalParser::ConstListContext *context) = 0;

    virtual antlrcpp::Any visitFunctionDeclaration(pascalParser::FunctionDeclarationContext *context) = 0;

    virtual antlrcpp::Any visitResultType(pascalParser::ResultTypeContext *context) = 0;

    virtual antlrcpp::Any visitStatement(pascalParser::StatementContext *context) = 0;

    virtual antlrcpp::Any visitUnlabelledStatement(pascalParser::UnlabelledStatementContext *context) = 0;

    virtual antlrcpp::Any visitSimpleStatement(pascalParser::SimpleStatementContext *context) = 0;

    virtual antlrcpp::Any visitAssignmentStatement(pascalParser::AssignmentStatementContext *context) = 0;

    virtual antlrcpp::Any visitVariable(pascalParser::VariableContext *context) = 0;

    virtual antlrcpp::Any visitExpression(pascalParser::ExpressionContext *context) = 0;

    virtual antlrcpp::Any visitRelationaloperator(pascalParser::RelationaloperatorContext *context) = 0;

    virtual antlrcpp::Any visitSimpleExpression(pascalParser::SimpleExpressionContext *context) = 0;

    virtual antlrcpp::Any visitAdditiveoperator(pascalParser::AdditiveoperatorContext *context) = 0;

    virtual antlrcpp::Any visitTerm(pascalParser::TermContext *context) = 0;

    virtual antlrcpp::Any visitMultiplicativeoperator(pascalParser::MultiplicativeoperatorContext *context) = 0;

    virtual antlrcpp::Any visitSignedFactor(pascalParser::SignedFactorContext *context) = 0;

    virtual antlrcpp::Any visitFactor(pascalParser::FactorContext *context) = 0;

    virtual antlrcpp::Any visitUnsignedConstant(pascalParser::UnsignedConstantContext *context) = 0;

    virtual antlrcpp::Any visitFunctionDesignator(pascalParser::FunctionDesignatorContext *context) = 0;

    virtual antlrcpp::Any visitParameterList(pascalParser::ParameterListContext *context) = 0;

    virtual antlrcpp::Any visitSet_(pascalParser::Set_Context *context) = 0;

    virtual antlrcpp::Any visitElementList(pascalParser::ElementListContext *context) = 0;

    virtual antlrcpp::Any visitElement(pascalParser::ElementContext *context) = 0;

    virtual antlrcpp::Any visitProcedureStatement(pascalParser::ProcedureStatementContext *context) = 0;

    virtual antlrcpp::Any visitActualParameter(pascalParser::ActualParameterContext *context) = 0;

    virtual antlrcpp::Any visitParameterwidth(pascalParser::ParameterwidthContext *context) = 0;

    virtual antlrcpp::Any visitGotoStatement(pascalParser::GotoStatementContext *context) = 0;

    virtual antlrcpp::Any visitEmptyStatement_(pascalParser::EmptyStatement_Context *context) = 0;

    virtual antlrcpp::Any visitEmpty_(pascalParser::Empty_Context *context) = 0;

    virtual antlrcpp::Any visitStructuredStatement(pascalParser::StructuredStatementContext *context) = 0;

    virtual antlrcpp::Any visitCompoundStatement(pascalParser::CompoundStatementContext *context) = 0;

    virtual antlrcpp::Any visitStatements(pascalParser::StatementsContext *context) = 0;

    virtual antlrcpp::Any visitConditionalStatement(pascalParser::ConditionalStatementContext *context) = 0;

    virtual antlrcpp::Any visitIfStatement(pascalParser::IfStatementContext *context) = 0;

    virtual antlrcpp::Any visitCaseStatement(pascalParser::CaseStatementContext *context) = 0;

    virtual antlrcpp::Any visitCaseListElement(pascalParser::CaseListElementContext *context) = 0;

    virtual antlrcpp::Any visitRepetetiveStatement(pascalParser::RepetetiveStatementContext *context) = 0;

    virtual antlrcpp::Any visitWhileStatement(pascalParser::WhileStatementContext *context) = 0;

    virtual antlrcpp::Any visitRepeatStatement(pascalParser::RepeatStatementContext *context) = 0;

    virtual antlrcpp::Any visitForStatement(pascalParser::ForStatementContext *context) = 0;

    virtual antlrcpp::Any visitForList(pascalParser::ForListContext *context) = 0;

    virtual antlrcpp::Any visitInitialValue(pascalParser::InitialValueContext *context) = 0;

    virtual antlrcpp::Any visitFinalValue(pascalParser::FinalValueContext *context) = 0;

    virtual antlrcpp::Any visitWithStatement(pascalParser::WithStatementContext *context) = 0;

    virtual antlrcpp::Any visitRecordVariableList(pascalParser::RecordVariableListContext *context) = 0;


};

}  // namespace pascal
